using System.Collections;
using Sedna.Core.Controller.Configurations;

namespace Sedna.Core.DataBinding
{
	public interface IDataBinder
	{
		bool Bind(string property);
		bool Bind(object root, string property);
		void Bind(string[] properties);
        void Bind(string[] properties, IDataTranslator translator);
		void Bind(object root, string[] properties);
		bool Bind(string property, IDataTranslator translator);
		bool Bind(object root, string property, IDataTranslator translator);

		bool Unbind(string property);
        bool Unbind(string property, bool AllowFirstUnbind);
		bool Unbind(object root, string property);
	    bool Unbind(object root, string property, bool AllowFirstUnbind);
		void Unbind(string[] properties);
        void Unbind(string[] properties, bool AllowFirstUnbind);
        void Unbind(string[] properties, IDataTranslator parser);
        void Unbind(string[] properties, IDataTranslator parser, bool AllowFirstUnbind);
		void Unbind(object root, string[] properties);
        void Unbind(object root, string[] properties, bool AllowFirstUnbind);
		bool Unbind(string property, IDataTranslator translator);
        bool Unbind(string property, IDataTranslator translator, bool AllowFirstUnbind);
		bool Unbind(object root, string property, IDataTranslator translator);
        bool Unbind(object root, string property, IDataTranslator translator, bool AllowFirstUnbind);

		bool SetPropertyValue(string property, object value);
		bool SetPropertyValue(object root, string property, object value);
		bool GetPropertyValue(string property, out object value);
		bool GetPropertyValue(object root, string property, out object value);
	}
}

